#include <stdio.h>
#include <iostream>
#include<math.h>
using namespace std;
int X1, Y1, X2, Y2;
class Point
{
	int x, y;
public:
	Point(int X = 0, int Y = 0)
	{
		x = X;
		y = Y;
	}
	Point(Point& p)
	{
		x = p.x;
		y = p.y;
	}
	~Point()
	{
		cout << "Point xigou " << x <<' ' << y << endl;
	}
	int GetX()
	{
		return x;
	}
	int GetY()
	{
		return y;
	}
	void setX(int X)
	{
		x = X;
	}
	void setY(int Y)
	{
		y = Y;
	}
	
};
class Ellipse
{
private:
	Point a;
	Point b;
	int x1, y1, x2, y2;
public:
	Ellipse();
	Ellipse(Point& p1, Point& p2)
	{
		a.setX(p1.GetX());
		a.setY(p1.GetY());
		b.setX(p2.GetX());
		b.setY(p2.GetY());
		cout << "gouzao 2 " << p1.GetX() <<' ' << p1.GetY()<<' ' << p2.GetX()<<' ' << p2.GetY() << endl;
	}
	Ellipse(int x1, int y1, int x2, int y2);
	Ellipse(const Ellipse& e);
	void Show()
	{
		cout << a.GetX() << ' ' << a.GetY() << ' ' << b.GetX() << ' ' << b.GetY() << endl;
	}
	void S()
	{
		double f = abs(a.GetX()) * abs(a.GetY()) * 3.1415;
		cout << f << endl;
		
	}
	~Ellipse();
};
Ellipse::Ellipse(int X1, int Y1, int X2, int Y2)
{
	a.setX(X1);
	a.setY(Y1);
	b.setX(X2);
	b.setY(Y2);
	
	cout << "gouzao 1 " << a.GetX() <<' ' << a.GetY()<<' ' << b.GetX()<<' ' << b.GetY() << endl;
}
Ellipse::~Ellipse()
{
	cout << "Ellipse xigou" << ' ' << b.GetX() << ' ' << b.GetY();
	
		cout << endl;
}

int main()
{
	int x1, y1, x2, y2;
	cin >> X1 >> Y1 >> X2 >> Y2 ;
	cin >> x1 >> y1 >> x2 >> y2;
	class Ellipse e(X1,Y1,X2,Y2);
	Point a(x1, y1);
	Point b(x2, y2);
	class Ellipse e2(a,b);
	
	e.Show();
	e2.Show();
	e.S();
	e2.S();
	return 0;

}